package com.zeny.express.framework.shared.domain;

/**
 * 数据实体抽象类
 * 
 * @author zhuwei
 * @date 2013年8月15日 上午10:41:24
 */
public abstract class BaseEntity extends BaseObject {

	/**
	 * 实体ID
	 */
	private String id;

	/**
	 * 通过ID比较对象是否一致
	 * 
	 * @author zhuwei
	 * @date 2013年8月15日 上午10:53:07
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (getClass() != obj.getClass()) {
			return false;
		}

		final BaseEntity other = (BaseEntity) obj;
		if (getId() != null && other.getId() != null) {
			return getId().equals(other.getId());
		}

		return false;
	}

	/**
	 * 获取ID的hash code
	 * 
	 * @author zhuwei
	 * @date 2013年8月15日 上午10:53:16
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		return id == null ? System.identityHashCode(this) : id.hashCode();
	}

	/**
	 * @return id
	 */
	public String getId() {
		return id;
	}

	/**
	 * @param id
	 */
	public void setId(String id) {
		this.id = id;
	}

}
